home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 4
/
United Public Domain Gold 4.iso
/
fredfish
/
ff.0388.dms
/
ff.0388.adf
/
Free
/
errors.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-10-23
|
3KB
|
107 lines
/***************************************************************************
* errors.c: Error-handling functions.
*
* Part of...
*
* FREE: Display free space on your disk volumes.
* Author: Daniel Jay Barrett, barrett@cs.jhu.edu.
*
* This program is Freely Distributable. Make all the copies you want
* and give them away. Use this code in any way you like.
***************************************************************************/
#include "free.h"
/* The user made a mistake in invoking the program. Give 'em hell. */
void Usage(char *prog)
{
fprintf(stderr, "%s%s%s Version %s by Daniel Jay Barrett.\n",
HI_ON, prog, HI_OFF, VERSION);
fprintf(stderr, "Inspired by Tom Smythe's FREE on Fish Disk 66.\n");
fprintf(stderr, "This program is Freely Distributable.\n\n");
fprintf(stderr,
"Usage: %s%s%s [-%c%c] [-%c BYTES] [-%c LENGTH] [volume1] [volume2] ...\n\n",
HI_ON, prog, HI_OFF, OPT_BLOCKS, OPT_REQUESTORS, OPT_MALLOC,
OPT_VOLUME_NAME_LEN);
fprintf(stderr, "\t-%c:\tDisplay blocks instead of bytes.\n",
OPT_BLOCKS);
fprintf(stderr, "\t-%c:\tEnable volume requestors.\n", OPT_REQUESTORS);
fprintf(stderr, "\t-%c:\tAllocate BYTES of memory for the output.\n",
OPT_MALLOC);
fprintf(stderr,
"\t-%c:\tSpecify the max LENGTH of a volume name (1 - %d).\n",
OPT_VOLUME_NAME_LEN, MAX_NAME_LEN);
fprintf(stderr, "\nIf no volumes given, the environment ");
fprintf(stderr, "variable `%s' is used.\n", ENV_VARIABLE);
fprintf(stderr, "Example: setenv %s \"df0:,df1:,ram:,dh0:\"\n\n",
ENV_VARIABLE);
fprintf(stderr, "If %s does not exist,\n", ENV_VARIABLE);
fprintf(stderr, "then the following devices are checked by default:\n");
fprintf(stderr, "\t%s\n\n", DEFAULT_VOLUMES);
}
/* Given a particular error code, print the appropriate error message. */
void ErrorMsg(ERROR code)
{
if (code)
fprintf(stderr, "ERROR! ");
switch (code)
{
case NO_ERROR:
break;
case ERROR_TOO_SMALL:
fprintf(stderr,
"%s%d%s%c%s%s",
"The output is too long to fit in ",
memSize, " bytes.\nUse the -", OPT_MALLOC,
" option to increase memory size.\n",
"Output TRUNCATED and possibly not accurate.\n\n");
break;
case ERROR_CANT_MALLOC:
fprintf(stderr, "Can't allocate that much memory!\n");
break;
case ERROR_FORMAT_STRING:
fprintf(stderr, "%s%c%s%d%s\n",
"Your -", OPT_VOLUME_NAME_LEN,
" value must be an integer between 1 and ",
MAX_NAME_LEN, ".");
break;
case ERROR_IMPOSSIBLE:
fprintf(stderr, "This should never happen!\n");
fprintf(stderr, "There must be a bug in this program.\n");
break;
}
}
/* If the user specified an illegal value (0 or less) as the argument of
* the option OPT_VOLUME_NAME_LEN, complain! Then use the default value. */
void CheckVolumeNameLen(int *nameLen)
{
if (*nameLen < 1 || *nameLen > MAX_NAME_LEN)
{
ErrorMsg(ERROR_FORMAT_STRING);
*nameLen = DEFAULT_NAME_LEN;
}
}
/* If the user specified an invalid volume name, complain! A valid name
* must have at least 1 character (really two, but...), and its last
* character must be VOLUME_END_CHAR. */
int ValidDriveName(char *drive)
{
int len = strlen(drive);
return((len > 0) && (drive[len-1] == VOLUME_END_CHAR));
}